package api;
import interfaces.Notificador;

import javax.swing.*;

import java.awt.*;

public class Dispositivo {
	private final int imagenWidth = 20;
	private final int imagenHeigth = 20;
	private String id;
	private String piso;
	private int coordX;
	private int coordY;	
	private String pathImagen = "";	
	private Notificador objeto;
	
	public Dispositivo(){}
		
	public Dispositivo(String id, String ubicacion, String pathImagen,Notificador objeto){		
		this.piso = ubicacion;
		this.id=id;
		this.pathImagen = pathImagen;
		Image imagen = new ImageIcon(this.pathImagen).getImage();		
		
		this.objeto = objeto;
		if (imagen != null) {
			imagen = imagen.getScaledInstance(this.imagenWidth, this.imagenHeigth,Image.SCALE_SMOOTH);
			
		}
	}
	
	public String getPiso(){
		return this.piso;
	}
	public void setPiso(String piso){
		this.piso = piso;
	}
	public Notificador getNotificador(){
		return this.objeto;
	}
	public void setNotificador(Notificador objeto){
		this.objeto = objeto;
	}
	public String getId(){
		return this.id;
	}
	public int getCoordX(){
		return this.coordX;
	}
	public int getCoordY(){
		return this.coordY;
	}
	public String getPathIcono(){
		return this.pathImagen;
	}
	public int getWidth(){
		return this.imagenWidth;
	}
	public int getHeight(){
		return this.imagenHeigth;
	}
	public void setPathImagen(String pathImagen){
		this.pathImagen = pathImagen;
	}
	public String getPathImagen(){
		return this.pathImagen;
	}
	
	// Verifica si las coordenadas pasadas por parametro estan dentro del dispositivo
	public boolean getAreaActiva(int x, int y){		
		if ((x >= this.coordX) && (x <= (this.coordX+this.imagenWidth)) &&
			(y >= this.coordY) && (y <= (this.coordY+this.imagenHeigth))){			
			return true;
		}
		else return false;
	}
	
	public void setCoordenadas(int x, int y){
		this.coordX = x;
		this.coordY = y;
	}
	
	public String toString(){
		return this.id+" "+this.piso;
	}
	
	public boolean equals(Object obj){	
		boolean salida = false;      
        if (obj != null && (obj.getClass().equals(this.getClass()))) {
           Dispositivo dispositivo = (Dispositivo) obj;           
           salida = (dispositivo.getCoordX()==this.getCoordX() &&
        		   dispositivo.getCoordY() == this.getCoordY() &&
        		   dispositivo.getHeight() == this.getHeight() &&
        		   dispositivo.getWidth() == this.getWidth() &&
        		   dispositivo.getId().compareTo(this.getId())==0 &&
        		   dispositivo.getPiso().compareTo(this.getPiso())==0 /*&&
        		   dispositivo.getNotificador().equals(this.getNotificador())*/);
       }
       return salida;
	}
	
}

